/*

 _/    _/_/    _/_/_/_/_/                              _/
 _/    _/      _/      _/_/    _/    _/    _/_/_/  _/_/_/
 _/  _/  _/_/      _/    _/    _/  _/    _/  _/        _/    _/
 _/  _/    _/      _/    _/    _/  _/    _/  _/        _/    _/
 _/    _/_/  _/    _/      _/_/      _/_/_/    _/_/_/  _/    _/
 _/
 _/

 Created by David Kaneda <http://www.davidkaneda.com>
 Documentation and issue tracking on Google Code <http://code.google.com/p/jqtouch/>

 Special thanks to Jonathan Stark <http://jonathanstark.com/>
 and pinch/zoom <http://www.pinchzoom.com/>

 (c) 2009 by jQTouch project members.
 See LICENSE.txt for license.

 */

(function($)
{

    $.fn.transition = function(css, options)
    {
        return this.each(function()
        {
            var $el = $(this);
            var defaults = {
                speed : '300ms',
                callback: null,
                ease: 'ease-in-out'
            };
            var settings = $.extend({}, defaults, options);
            if(settings.speed === 0)
            {
                $el.css(css);
                window.setTimeout(settings.callback, 0);
            }
            else
            {
                if($.browser.safari)
                {
                    var s = [];
                    for(var i in css)
                    {
                        s.push(i);
                    }
                    $el.css({
                        webkitTransitionProperty: s.join(", "),
                        webkitTransitionDuration: settings.speed,
                        webkitTransitionTimingFunction: settings.ease
                    });
                    if(settings.callback)
                    {
                        $el.one('webkitTransitionEnd', settings.callback);
                    }
                    setTimeout(function(el)
                    {
                        el.css(css)
                    }, 0, $el);
                }
                else
                {
                    $el.animate(css, settings.speed, settings.callback);
                }
            }
        });
    }
})(jQuery);